From 8653a1bed57a09ec8a496d69611ac44a13f964bf Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Mon, 12 Oct 2020 10:51:40 +0100 Subject: [PATCH] Revert automatic choice of preview text for font-chooser This requires Pango 1.47, which we don't have in Debian yet. --- debian/patches/Require-gtk-doc-1.33.patch | 4 +- ...-Determine-sample-text-intelligently.patch | 211 ++++++++++++++++++ debian/patches/series | 1 + 3 files changed, 214 insertions(+), 2 deletions(-) create mode 100644 debian/patches/debian/Revert-fontchooser-Determine-sample-text-intelligently.patch diff --git a/debian/patches/Require-gtk-doc-1.33.patch b/debian/patches/Require-gtk-doc-1.33.patch index 9a7a58f8cd..9c5565d704 100644 --- a/debian/patches/Require-gtk-doc-1.33.patch +++ b/debian/patches/Require-gtk-doc-1.33.patch @@ -11,10 +11,10 @@ Origin: upstream, 3.99.3, commit:ffb51b6888f9b199f31434cfeca89203130471c7 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meson.build b/meson.build -index 019b608..4476488 100644 +index 127671a..fa39070 100644 --- a/meson.build +++ b/meson.build -@@ -382,7 +382,7 @@ graphene_dep = dependency('graphene-gobject-1.0', version: graphene_req, +@@ -383,7 +383,7 @@ graphene_dep = dependency('graphene-gobject-1.0', version: graphene_req, fallback: ['graphene', 'graphene_dep']) iso_codes_dep = dependency('iso-codes', required: false) diff --git a/debian/patches/debian/Revert-fontchooser-Determine-sample-text-intelligently.patch b/debian/patches/debian/Revert-fontchooser-Determine-sample-text-intelligently.patch new file mode 100644 index 0000000000..148432358f --- /dev/null +++ b/debian/patches/debian/Revert-fontchooser-Determine-sample-text-intelligently.patch @@ -0,0 +1,211 @@ +From: Simon McVittie +Date: Mon, 12 Oct 2020 10:50:18 +0100 +Subject: Revert "fontchooser: Determine sample text intelligently" + +Debian doesn't have the Pango 1.47 development branch yet. + +This reverts commit 69d5dc7c9a3f704ba9d423035864382fea390d67. + +Forwarded: not-needed +--- + gtk/gtkfontchooserwidget.c | 137 +-------------------------------------------- + meson.build | 2 +- + 2 files changed, 2 insertions(+), 137 deletions(-) + +diff --git a/gtk/gtkfontchooserwidget.c b/gtk/gtkfontchooserwidget.c +index 254752f..293e64e 100644 +--- a/gtk/gtkfontchooserwidget.c ++++ b/gtk/gtkfontchooserwidget.c +@@ -65,9 +65,6 @@ + #include "gtkstringsorter.h" + + #include +-#if defined(HAVE_PANGOFT) && defined(HAVE_HARFBUZZ) +-#include +-#endif + + #include "language-names.h" + #include "script-names.h" +@@ -119,7 +116,6 @@ struct _GtkFontChooserWidget + GtkWidget *font_name_label; + char *preview_text; + gboolean show_preview_entry; +- gboolean preview_text_set; + + GtkWidget *size_label; + GtkWidget *size_spin; +@@ -232,7 +228,6 @@ gtk_font_chooser_widget_set_property (GObject *object, + break; + case GTK_FONT_CHOOSER_PROP_PREVIEW_TEXT: + gtk_font_chooser_widget_set_preview_text (fontchooser, g_value_get_string (value)); +- fontchooser->preview_text_set = TRUE; + break; + case GTK_FONT_CHOOSER_PROP_SHOW_PREVIEW_ENTRY: + gtk_font_chooser_widget_set_show_preview_entry (fontchooser, g_value_get_boolean (value)); +@@ -545,130 +540,6 @@ resize_by_scroll_cb (GtkEventControllerScroll *controller, + gtk_adjustment_get_step_increment (adj) * dx); + } + +-static void +-maybe_update_preview_text (GtkFontChooserWidget *self, +- PangoFontFace *face, +- PangoFontDescription *desc) +-{ +-#if defined(HAVE_PANGOFT) && defined(HAVE_HARFBUZZ) +- PangoContext *context; +- PangoFont *font; +- const char *sample; +- +- /* If the user has typed text into the entry, we don't touch it */ +- if (self->preview_text_set) +- return; +- +- if (self->filter_by_language && self->filter_language) +- { +- sample = pango_language_get_sample_string (self->filter_language); +- gtk_font_chooser_widget_set_preview_text (self, sample); +- return; +- } +- +- /* We do the work only once, and cache the result on the PangoFontFace */ +- sample = (const char *)g_object_get_data (G_OBJECT (face), "gtk-sample-text"); +- if (sample) +- { +- gtk_font_chooser_widget_set_preview_text (self, sample); +- return; +- } +- +- context = gtk_widget_get_pango_context (GTK_WIDGET (self)); +- font = pango_context_load_font (context, desc); +- +- if (PANGO_IS_FC_FONT (font)) +- { +- PangoLanguage **languages; +- GHashTable *langs = NULL; +- PangoLanguage *default_lang; +- PangoLanguage *alt_default = NULL; +- PangoLanguage *lang = NULL; +- int i; +- const char *p; +- +- default_lang = pango_language_get_default (); +- p = pango_language_to_string (default_lang); +- +- /* The default language tends to be of the form en-us. +- * Since fontconfig languages just have the language part, +- * and we want to use direct pointer comparisons, we need +- * an PangoLanguage for the shortened default language. +- */ +- if (strchr (p, '-')) +- { +- char q[10]; +- for (i = 0; p[i] != '-' && i < 9; i++) +- q[i] = p[i]; +- q[i] = '\0'; +- alt_default = pango_language_from_string (q); +- } +- +- languages = pango_fc_font_get_languages (PANGO_FC_FONT (font)); +- +- /* If the font supports the default language, just use it. */ +- for (i = 0; languages[i]; i++) +- { +- if (languages[i] == default_lang || languages[i] == alt_default) +- { +- lang = default_lang; +- goto found; +- } +- } +- +- /* Otherwise, we make a list of representative languages */ +- langs = g_hash_table_new (NULL, NULL); +- +- for (i = 0; languages[i]; i++) +- { +- const PangoScript *scripts; +- int num, j; +- +- scripts = pango_language_get_scripts (languages[i], &num); +- for (j = 0; j < num; j++) +- { +- lang = pango_script_get_sample_language (scripts[j]); +- if (lang) +- g_hash_table_add (langs, lang); +- } +- } +- +- /* ... and compare it to the users default and preferred languages */ +- if (g_hash_table_contains (langs, default_lang) || +- g_hash_table_contains (langs, alt_default)) +- { +- lang = default_lang; +- } +- else +- { +- PangoLanguage **preferred; +- +- preferred = pango_language_get_preferred (); +- if (preferred) +- { +- for (i = 0; preferred[i]; i++) +- { +- if (g_hash_table_contains (langs, preferred[i])) +- { +- lang = preferred[i]; +- break; +- } +- } +- } +- } +- g_hash_table_unref (langs); +- +-found: +- sample = pango_language_get_sample_string (lang); +- gtk_font_chooser_widget_set_preview_text (self, sample); +- g_object_set_data (G_OBJECT (face), "gtk-sample-text", (gpointer)sample); +- } +- +- g_object_unref (font); +-#endif +-} +- +- + static void + selection_changed_cb (GtkSingleSelection *selection, + GParamSpec *pspec, +@@ -689,11 +560,8 @@ selection_changed_cb (GtkSingleSelection *selection, + desc = pango_font_face_describe (face); + pango_font_description_set_variations (self->font_desc, NULL); + gtk_font_chooser_widget_merge_font_desc (self, desc); +- g_simple_action_set_enabled (G_SIMPLE_ACTION (self->tweak_action), TRUE); +- +- maybe_update_preview_text (self, face, desc); +- + pango_font_description_free (desc); ++ g_simple_action_set_enabled (G_SIMPLE_ACTION (self->tweak_action), TRUE); + } + else + { +@@ -2374,9 +2242,6 @@ static void + gtk_font_chooser_widget_set_preview_text (GtkFontChooserWidget *fontchooser, + const char *text) + { +- if (fontchooser->preview_text == text) +- return; +- + g_free (fontchooser->preview_text); + fontchooser->preview_text = g_strdup (text); + +diff --git a/meson.build b/meson.build +index fa39070..b16fafb 100644 +--- a/meson.build ++++ b/meson.build +@@ -23,7 +23,7 @@ else + endif + + glib_req = '>= @0@.@1@.@2@'.format(glib_major_req, glib_minor_req, glib_micro_req) +-pango_req = '>= 1.47.0' # keep this in sync with .gitlab-ci/test-msys.sh ++pango_req = '>= 1.45.5' + fribidi_req = '>= 0.19.7' + cairo_req = '>= 1.14.0' + gdk_pixbuf_req = '>= 2.30.0' diff --git a/debian/patches/series b/debian/patches/series index b496eced3c..5afb4ff596 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1 +1,2 @@ Require-gtk-doc-1.33.patch +debian/Revert-fontchooser-Determine-sample-text-intelligently.patch -- 2.30.2